# 导入必要的库
import numpy as np
import pandas as pd
from sklearn.datasets import load_iris
from sklearn.preprocessing import StandardScaler
from sklearn.decomposition import PCA
import matplotlib.pyplot as plt

# 载入鸢尾花数据集
iris = load_iris()
X = iris.data
y = iris.target

# 创建 DataFrame 对象
df = pd.DataFrame(data=X, columns=iris.feature_names)
df['target'] = y

# 数据描述
print(df.describe())

# 数据清洗（无缺失值或异常值处理）

# 数据转换（标准化）
scaler = StandardScaler()
X_scaled = scaler.fit_transform(X)

# 数据规约（PCA降维）
pca = PCA(n_components=2)
X_pca = pca.fit_transform(X_scaled)

# 构建多维模型结构（绘制降维后的散点图）
plt.figure(figsize=(8, 6))
plt.scatter(X_pca[:, 0], X_pca[:, 1], c=y, cmap='viridis', edgecolor='k')
plt.xlabel('PCA Component 1')
plt.ylabel('PCA Component 2')
plt.title('PCA of Iris Dataset')
plt.colorbar()
plt.show()